package procesos;

import java.sql.Connection;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.GregorianCalendar;

import entidades.AnteojosEntity;
import entidades.Conexiones;

public class ProcesoAnteojos {

	private static ArrayList<AnteojosEntity> getAnteojos(Connection con,
			int codCliente2,int codCliente1) {
		ArrayList<AnteojosEntity> lista = new ArrayList<AnteojosEntity>();
		AnteojosEntity lejos = null;
		AnteojosEntity cerca = null;

		String C_CLIENT;
		String LEJOD_OD;
		String LEJOD_CIL;
		String LEJOD_GRADOS="";
		String LEJOD_CRIS;
		String LEJOI_OI;
		String LEJOI_CIL;
		String LEJOI_GRADOS="";
		String LEJOI_ARM;
		String CEROD_OD;
		String CEROD_CIL;
		String CEROD_GRADOS="";
		String CEROD_CRIS;
		String CEROI_OI;
		String CEROI_CIL;
		String CEROI_GRADOS="";
		String CEROI_ARM;
		String CEROI_DI;
		String CEROI_ALT;
		String DOCTOR;
		String F_PEDIDO;
		String F_ENTREG;
		String F_ENTREGAD;
		String OBSERV;

		String auxiliar[] = null;

		try {
			Statement stat = con.createStatement();
			ResultSet rset = stat
					.executeQuery("select * from anteo where C_CLIENT = "
							+ codCliente2);

			while (rset.next()) {

				C_CLIENT = rset.getString("C_CLIENT");
				LEJOD_OD = rset.getString("LEJOD_OD");
				LEJOD_CIL = rset.getString("LEJOD_CIL");
				LEJOD_CRIS = rset.getString("LEJOD_CRIS");
				LEJOI_OI = rset.getString("LEJOI_OI");
				LEJOI_CIL = rset.getString("LEJOI_CIL");
				LEJOI_ARM = rset.getString("LEJOI_ARM");
				CEROD_OD = rset.getString("CEROD_OD");
				CEROD_CIL = rset.getString("CEROD_CIL");
				CEROD_CRIS = rset.getString("CEROD_CRIS");
				CEROI_OI = rset.getString("CEROI_OI");
				CEROI_CIL = rset.getString("CEROI_CIL");
				CEROI_ARM = rset.getString("CEROI_ARM");
				CEROI_DI = rset.getString("CEROI_DI");
				CEROI_ALT = rset.getString("CEROI_ALT");
				DOCTOR = rset.getString("DOCTOR");
				F_PEDIDO = rset.getString("F_PEDIDO");
				F_ENTREG = rset.getString("F_ENTREG");
				F_ENTREGAD = rset.getString("F_ENTREGAD");
				OBSERV = rset.getString("OBSERV");

				if (C_CLIENT == null) {
					C_CLIENT = "";
				}
				if (LEJOD_OD == null) {
					LEJOD_OD = "";
				}
				if (LEJOD_CIL == null) {
					LEJOD_CIL = "";
				}
				if (LEJOD_CRIS == null) {
					LEJOD_CRIS = "";
				}
				if (LEJOI_OI == null) {
					LEJOI_OI = "";
				}
				if (LEJOI_CIL == null) {
					LEJOI_CIL = "";
				}
				if (LEJOI_ARM == null) {
					LEJOI_ARM = "";
				}
				if (CEROD_OD == null) {
					CEROD_OD = "";
				}
				if (CEROD_CIL == null) {
					CEROD_CIL = "";
				}
				if (CEROD_CRIS == null) {
					CEROD_CRIS = "";
				}
				if (CEROI_OI == null) {
					CEROI_OI = "";
				}
				if (CEROI_CIL == null) {
					CEROI_CIL = "";
				}
				if (CEROI_ARM == null) {
					CEROI_ARM = "";
				}
				if (CEROI_DI == null) {
					CEROI_DI = "";
				}
				if (CEROI_ALT == null) {
					CEROI_ALT = "";
				}
				if (DOCTOR == null) {
					DOCTOR = "";
				}
				if (F_PEDIDO == null) {
					F_PEDIDO = "";
				}
				if (F_ENTREG == null) {
					F_ENTREG = "";
				}
				if (F_ENTREGAD == null) {
					F_ENTREGAD = "";
				}
				if (OBSERV == null) {
					OBSERV = "";
				}

				C_CLIENT = C_CLIENT.trim();
				LEJOD_OD = LEJOD_OD.trim();
				LEJOD_CIL = LEJOD_CIL.trim();
				LEJOD_CRIS = LEJOD_CRIS.trim();
				LEJOI_OI = LEJOI_OI.trim();
				LEJOI_CIL = LEJOI_CIL.trim();
				LEJOI_ARM = LEJOI_ARM.trim();
				CEROD_OD = CEROD_OD.trim();
				CEROD_CIL = CEROD_CIL.trim();
				CEROD_CRIS = CEROD_CRIS.trim();
				CEROI_OI = CEROI_OI.trim();
				CEROI_CIL = CEROI_CIL.trim();
				CEROI_ARM = CEROI_ARM.trim();
				CEROI_DI = CEROI_DI.trim();
				CEROI_ALT = CEROI_ALT.trim();
				DOCTOR = DOCTOR.trim();
				F_PEDIDO = F_PEDIDO.trim();
				F_ENTREG = F_ENTREG.trim();
				F_ENTREGAD = F_ENTREGAD.trim();
				OBSERV = OBSERV.trim();
				if(OBSERV.length()>255)
					OBSERV = OBSERV.substring(0, 254);	

				if (!LEJOD_CIL.equals("")) {

					LEJOD_CIL = LEJOD_CIL.replace("EN", " ");
					
					auxiliar = LEJOD_CIL.split(" ");

					for (int i = 0; i < auxiliar.length; i++) {
						auxiliar[i] = auxiliar[i].trim();
					}
					if(auxiliar[0].length() ==1  && auxiliar.length >1)LEJOD_CIL = auxiliar[0] + auxiliar[1];else LEJOD_CIL = auxiliar[0];	
					
					for (int i = 1; i < auxiliar.length; i++) {

						if (!auxiliar[i].equals(""))
							LEJOD_GRADOS = auxiliar[i];
					}
				}
			
				if (!LEJOI_CIL.equals("")) {

					auxiliar = LEJOI_CIL.split(" ");

					for (int i = 0; i < auxiliar.length; i++) {
						auxiliar[i] = auxiliar[i].trim();
					}
					
					if(auxiliar[0].length() ==1 && auxiliar.length >1)LEJOI_CIL = auxiliar[0] + auxiliar[1];else LEJOI_CIL = auxiliar[0];

					for (int i = 1; i < auxiliar.length; i++) {

						if (!auxiliar[i].equals(""))
							LEJOI_GRADOS = auxiliar[i];
					}
				}
				
				if (!CEROD_CIL.equals("")) {

					auxiliar = CEROD_CIL.split(" ");

					for (int i = 0; i < auxiliar.length; i++) {
						auxiliar[i] = auxiliar[i].trim();
					}
					
					if(auxiliar[0].length() ==1  && auxiliar.length >1)CEROD_CIL = auxiliar[0] + auxiliar[1];else CEROD_CIL = auxiliar[0];

					for (int i = 1; i < auxiliar.length; i++) {

						if (!auxiliar[i].equals(""))
							CEROD_GRADOS = auxiliar[i];
					}
				}
				
				if (!CEROI_CIL.equals("")) {

					auxiliar = CEROI_CIL.split(" ");

					for (int i = 0; i < auxiliar.length; i++) {
						auxiliar[i] = auxiliar[i].trim();
					}
					
					if(auxiliar[0].length() ==1  && auxiliar.length >1)CEROI_CIL = auxiliar[0] + auxiliar[1];else CEROI_CIL = auxiliar[0];

					for (int i = 1; i < auxiliar.length; i++) {

						if (!auxiliar[i].equals(""))
							CEROI_GRADOS = auxiliar[i];
					}
				}
				
				
				
				
				
				if (!(LEJOD_OD.equals("")) || !(LEJOI_OI.equals("")) || !LEJOD_CIL.equals("") || !LEJOI_CIL.equals("")) {
					lejos = new AnteojosEntity();
					lejos.setCliente(codCliente1);
					lejos.setArmazon(LEJOI_ARM);
					lejos.setFechaEntregado(convertirStringADate(F_ENTREGAD));
					lejos.setFechaPrometido(convertirStringADate(F_ENTREG));
					lejos.setFechaPedido(convertirStringADate(F_PEDIDO));
					lejos.setLente(LEJOD_CRIS);
					lejos.setObservaciones(OBSERV);
					lejos.setODEsf(LEJOD_OD);
					lejos.setODCil(LEJOD_CIL);
					lejos.setODGrado(LEJOD_GRADOS);
					lejos.setOICil(LEJOI_CIL);
					lejos.setOIEsf(LEJOI_OI);
					lejos.setOIGrado(LEJOI_GRADOS);
					lejos.setTipo("Lejos");					

				}
				if (!(CEROD_OD.equals("")) || !(CEROI_OI.equals("")) || !CEROD_CIL.equals("") ||!CEROI_CIL.equals("")) {
					cerca = new AnteojosEntity();
					cerca.setCliente(codCliente1);
					cerca.setArmazon(CEROI_ARM);
					cerca.setFechaEntregado(convertirStringADate(F_PEDIDO));
					cerca.setFechaPrometido(convertirStringADate(F_ENTREG));
					cerca.setFechaPedido(convertirStringADate(F_PEDIDO));
					cerca.setLente(CEROD_CRIS);
					cerca.setObservaciones(OBSERV);
					cerca.setODEsf(CEROD_OD);
					cerca.setODCil(CEROD_CIL);
					cerca.setODGrado(CEROD_GRADOS);
					cerca.setOICil(CEROI_CIL);
					cerca.setOIEsf(CEROI_OI);
					cerca.setOIGrado(CEROI_GRADOS);
					cerca.setTipo("Cerca");

				}
				if (cerca != null) {
					lista.add(cerca);
					cerca = null;
				}
				if (lejos != null) {
					lista.add(lejos);
					lejos = null;
				}
			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			System.out.println("Error al buscar anteojos para el cliente:"
					+ codCliente2);
			e.printStackTrace();
		}
		return lista;
	}

	private static Date convertirStringADate(String string) {
		if (!string.equals("")) {
			int anio = Integer.valueOf(string.substring(0, 4));
			int mes = Integer.valueOf(string.substring(5, 7));
			int dia = Integer.valueOf(string.substring(8, 10));
			GregorianCalendar gregorian = new GregorianCalendar(anio,mes,dia);
			return new Date(gregorian.getTimeInMillis());
		} else{
			GregorianCalendar gregorian = new GregorianCalendar(1901,1,1);
			return new Date(gregorian.getTimeInMillis());
	}}

	public static void main(String[] args) {

		ArrayList<AnteojosEntity> anteojos;
		int i=0;
		try {
			Connection conODBC = Conexiones.getConexionODBC();
			Connection conMySql = Conexiones.getConexionMySQL();
			int id_cliente_odbc;
			int id_cliente_mysql;

			Statement statMySql = conMySql.createStatement();

			ResultSet rsMySql = statMySql
					.executeQuery("select * from clientes order by id");

			while (rsMySql.next()) {
				id_cliente_odbc = rsMySql.getInt("Cod_cliente");
				id_cliente_mysql = rsMySql.getInt("id");
				
				anteojos = getAnteojos(conODBC, id_cliente_odbc,id_cliente_mysql);
				for (AnteojosEntity anteojosEntity : anteojos) {
					anteojosEntity.save();
					System.out.println(i++);
				}
			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}